﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SistemaFacturacion.Entidades
{
    public class Document
    {
        #region Atributos
        private int _DocumentCode;
        private DateTime _PostingDate;
        private DateTime _DeliveryDate;
        private String _Moneda;
        private String _ClientCode;
        private List<DocDetail> _Detail;
        #endregion

        #region Constructor
        /// <summary>
        /// Constructor vacío
        /// </summary>
        public Document()
        {
        }

        /// <summary>
        /// Constructor con parámetros
        /// </summary>
        /// <param name="docCode">Código del documento único</param>
        /// <param name="postingDate">Fecha de emisión</param>
        /// <param name="deliveryDate">Fecha de vencimiento</param>
        /// <param name="moneda">Tipo de moned (Dólares, Colones, etc)</param>
        /// <param name="clientCode">Código del socio de negocio del cliente</param>
        public Document(int docCode, DateTime postingDate, DateTime deliveryDate, String moneda, String clientCode)
        {
            _DocumentCode = docCode;
            _PostingDate = postingDate;
            _DeliveryDate = deliveryDate;
            _Moneda = moneda;
            _ClientCode = clientCode;
        }
        #endregion

        #region Propiedades
        /// <summary>
        /// Obtiene el código del documento
        /// </summary>
        public int DocumentCode
        {
            get { return _DocumentCode; }
        }

        /// <summary>
        /// Obtiene la fecha de emisión
        /// </summary>
        public DateTime PostingDate
        {
            get { return _PostingDate; }
        }

        /// <summary>
        /// Obtiene la decha de vencimiento
        /// </summary>
        public DateTime DeliveryDate
        {
            get { return _DeliveryDate; }
        }

        /// <summary>
        /// Obtiene la moneda del documento
        /// </summary>
        public String Moneda
        {
            get { return _Moneda; }
        }

        /// <summary>
        /// Obtiene el código de socio de negocio del cliente
        /// </summary>
        public String ClientCode
        {
            get { return _ClientCode; }
            set { _ClientCode = value; }
        }

        /// <summary>
        /// Método que devuelve o setea la lista de items del detalle del documento
        /// </summary>
        public List<DocDetail> Detail
        {
            get { return _Detail; }
            set { _Detail = value; }
        }
        #endregion
    }
}
